實作時適合聽沒有詞的音樂,今天推薦我最最最愛的義大利新古典樂大師 Ludovico Einaudi,每次聽他演奏心靈都會很平靜,在發文前半小時把飲料打翻在電腦上的我很需要平靜…
這首是和 Green Peace 合作,在挪威漂流冰川上現場演奏 Ludovico 原創的 Elegy for the Arctic
到了 Day 5,該是時候建立一個 Spring Boot 應用程式(握拳)!
建立 Spring Boot Application 有很多種方式,最主流的方法是使用 Spring Initializr 這個線上工具。
透過它自動生成專案初始結構。中間過程只要選擇所需的 dependencies,其他設定 Initializr 會自動幫我們完成。
選擇 Maven Project
or Gradle Project
以及 Java
版本。
Group
通常會填入顛倒的域名,這邊我使用 com.meowmeow
;而 Artifact
通常設定為專案名稱,與Group、Version 作為唯一識別,這邊我填入 ithomexdemo
。於 Dependencies
區選擇想添加的依賴,這邊我加入了:
Spring Web
,這是為了建立網頁或 RESTful API。Spring Boot DevTools
,在開發環境時才需要使用到的熱部署 (hot deploy) 工具Spring Data JPA
:Spring 基於 Hibernate 開發的一個 JPA 框架Lombok
:是一個 Java library,通過 annotations 來簡化程式碼,除了提升可讀性外,還可節省開發時間。在 intellij 這個 IDE 中只要加入此 plugin 即可使用,如為 Eclipse 則需要另外安裝。Spring Boot Actuator
:提供了生產準備的功能來監控和管理你的應用,例如應用的健康狀態、已配置的環境屬性、JVM、GC、各種系統特性等。通過多個 endpoints 來提供例如應用程式的健康狀態 health check
、已配置的環境屬性、JVM、GC、各種系統特性等功能,這些端點可以通過 HTTP、JMX 或其他方式暴露。例如,我們可以通過 /health
來獲取當前應用程式的健康狀態。TestContainers
:是一個 Java library,透過使用 Docker 容器來進行整合測試。為多數資料庫、message queue、browsers 等提供了容器的支持,讓我們在整合測試時不需要安裝和運行真正的服務或資料庫,而可以直接在 Docker 容器中運行它們。例如我想在測試中使用 PostgreSQL,不需要在機器上安裝 PostgreSQL,只需要使用 TestContainers 啟動一個 PostgreSQL 的容器即可。完成以上步驟,點擊 Generate 下載 .zip
檔,然後解壓縮至當前工作目錄。
將下載的項目 import 到你所使用的 IDE(如 IntelliJ 或 Eclipse)
解壓縮後的資料夾結構會如下:
Maven
ithomexdemo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── meowmeow/
│ │ │ └── ithomexdemo/
│ │ │ └── IthomexdemoApplication.java
│ │ ├── resources/
│ │ │ ├── static/
│ │ │ ├── templates/
│ │ │ └── application.properties
│ └── test/
│ └── ...
├── mvnw
├── mvnw.cmd
├── pom.xml
└── ...
Gradle
ithomexdemo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── meowmeow/
│ │ │ └── ithomexdemo/
│ │ │ └── IthomexdemoApplication.java
│ │ ├── resources/
│ │ │ ├── static/
│ │ │ ├── templates/
│ │ │ └── application.properties
│ └── test/
│ └── ...
├── build.gradle
└── ...
主要的 Java source code 位於 src/main/java
,而配置文件和其他 resources 則位於 src/main/resources
。
明天來接續說明一下目錄結構及這些好用的工具,另外順便教大家如何使用學生身份申請 JetBrains IDE 個人使用的 Free Educational Licenses!